package com.cy.comstore.service;

import com.cy.comstore.entity.Cart;
import com.baomidou.mybatisplus.extension.service.IService;
import com.cy.comstore.vo.CartVO;

import java.util.List;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author xsn
 * @since 2023-03-03
 */
public interface ICartService {
    /**
     * 将商品添加到购物车
     * @param uid 当前登录用户的id
     * @param pid 商品的id
     * @param amount 增加的数量
     * @param username 当前登录的用户名
     */
    void insertCart(Integer uid, Integer pid, Integer amount, String username);
    /**
     * 查询某用户的购物车数据
     * @param uid 用户id
     * @return 该用户的购物车数据的列表
     */
    List<CartVO> getVOByUid(Integer uid);

    /**
     *
     * 将购物车中某商品的数量加1
     * @param cid 购物车数量的id
     * @param uid 当前登录的用户的id
     * @param username 当前登录的用户名
     * @return 增加成功后新的数量
     * 有返回值是为了方便数量改变时，直接传数量给页面，异步更新
     * 如果没有，则每次加减都需要重新加载购物车页面，发送请求多卡顿久
     */
    Integer addNum(Integer cid, Integer uid, String username);

    /**
     *
     * 根据若干个购物车数据id查询详情的列表
     * @param uid 当前登录的用户的id
     * @param cids 若干个购物车数据id
     * @return 匹配的购物车数据详情的列表
     */
    List<CartVO> getVOByCids(Integer uid, Integer[] cids);

    /**
     *
     * 将购物车中某商品的数量-1
     * @param cid 购物车数量的id
     * @param uid 当前登录的用户的id
     * @param username 当前登录的用户名
     * @return 增加成功后新的数量
     */
    Integer subNum(Integer cid, Integer uid, String username);

    Boolean deleteByCids(Integer[] cids);
}
